package com.chengh.nami.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chengh.nami.common.request.PageQuery;
import com.chengh.nami.common.response.PageData;
import com.chengh.nami.system.domain.dto.UserDto;
import com.chengh.nami.common.domain.pojo.SysRole;
import com.chengh.nami.common.domain.pojo.SysUser;
import com.chengh.nami.system.domain.vo.UserVo;

import java.util.List;

/**
 * @author chengh
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * 获取全部用户的信息
     *
     * @return 全部用户集合
     */
    List<SysUser> getInfos();

    /**
     * 分页获取用户信息
     *
     * @param userDto 查询条件
     * @param pageQuery 分页信息
     * @return 用户集合
     */
    PageData<UserVo> getUserList(UserDto userDto, PageQuery pageQuery);

    /**
     * 根据名称获取用户信息
     *
     * @param userName 用户名称
     * @return 用户信息
     */
    SysUser getUserByName(String userName);

    /**
     * 根据用户ID获取用户的角色
     *
     * @param userId 用户ID
     * @return 角色列表
     */
    List<SysRole> getSysRoleByUserId(Long userId);

    /**
     * 根据用户ID获取用户的信息
     *
     * @param id 用户ID
     * @return 用户的详细信息
     */
    UserVo getUserInfoById(Long id);

    /**
     * 判断用户名是否存在
     * @param username 用户账号
     * @return 是否存在 true:存在  false：不存在
     */
    boolean checkUserNameUnique(String username);

    /**
     * 新增用户
     * @param user 用户信息
     * @return 是否成功
     */
    boolean insertUser(SysUser user);
}
